#include "thr_set.h"
#include "ui_thr_set.h"
#include <QDebug>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QMessageBox>
#include <QSerialPort>
#include <QSerialPortInfo>
extern QSerialPort serial;
extern float s_env_t_thr_min;
extern float s_env_t_thr_max;
extern float s_env_h_thr_min;
extern float s_env_h_thr_max;
extern float s_check_t_thr_min;
extern float s_check_t_thr_max;
extern int   s_co2_thr_max;


thr_set::thr_set(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::thr_set)
{
    ui->setupUi(this);
    connect(ui->thr_set_btn, &QPushButton::clicked, this, &thr_set::thr_set_btn);

    ui->t_min->setValue(s_env_t_thr_min);
    ui->t_max->setValue(s_env_t_thr_max);
    ui->h_min->setValue(s_env_h_thr_min);
    ui->h_max->setValue(s_env_h_thr_max);
    ui->c_min->setValue(s_check_t_thr_min);
    ui->c_max->setValue(s_check_t_thr_max);
    ui->co->setValue(s_co2_thr_max);


}

thr_set::~thr_set()
{
    delete ui;
}

void thr_set::thr_set_btn()
{
    qDebug() <<"thr_set_btn press!";

    QJsonObject json;
    json["ett-"] = static_cast<int>(ui->t_min->value());   // 环境温度最小值
    json["ett+"] = static_cast<int>(ui->t_max->value());   // 环境温度最大值
    json["eht-"] = static_cast<int>(ui->h_min->value());   // 环境湿度最小值
    json["eht+"] = static_cast<int>(ui->h_max->value());   // 环境湿度最大值
    json["ctt-"] = static_cast<int>(ui->c_min->value());   // 检测温度最小值
    json["ctt+"] = static_cast<int>(ui->c_max->value());   // 检测温度最大值
    json["cot+"] = static_cast<int>(ui->co->value());      // CO₂ 最大阈值

    QJsonDocument doc(json);
    QString jsonStr = QString::fromUtf8(doc.toJson(QJsonDocument::Compact));
    qDebug() << "打包的阈值 JSON：" << jsonStr;

    // ✅ 通过串口发送
    QByteArray data = jsonStr.toUtf8();
    data.append("\r\n");  // 加个换行符方便接收端识别

    if (serial.isOpen()) {
        serial.write(data);
        QMessageBox::information(this, "发送成功", "已将阈值 JSON 数据发送到串口！");
    } else {
        QMessageBox::warning(this, "发送失败", "串口未打开，无法发送数据！");
    }
}
